﻿#include <stdio.h>
#define T 16
#define N 1024
void parallel_work() {
    int x1 = 0, x2 = 0;
#pragma omp parallel shared(x1, x2) num_threads(T)                           
    {
        // 第一部分：taskloop 直接嵌套在 parallel 区域内
#pragma omp taskloop
        for (int i = 0; i < N; ++i) {
#pragma omp atomic
            x1++;  // 执行 T*N 次（16*1024=16384）
        }
        // 第二部分：taskloop 嵌套在 single 区域内
#pragma omp single
        {
#pragma omp taskloop
            for (int i = 0; i < N; ++i) {
#pragma omp atomic
                x2++;  // 执行 N 次（1024）
            }
        }
    } // 结束 parallel 区域

    printf("x1 = %d, x2 = %d\n", x1, x2);
}
